package com.chengliang.bbs.mapper;

import com.chengliang.bbs.common.MyBaseMapper;
import com.chengliang.bbs.entry.ContinuityPractice;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @author chengliang
 */
public interface ContinuityPracticeMapper extends MyBaseMapper<ContinuityPractice> {

    /**
     * 是否断签
     * @param userId
     * @return
     */
    boolean isPracticeDayBefore(Integer userId);

    /**
     * 签到天数加一
     * @param userId 用户ID
     * @param practiceTime 签到时间
     * @return
     */
    boolean practiceDayNumberAddOne(@Param("userId") Integer userId, @Param("practiceTime") LocalDateTime practiceTime);

    /**
     * 签到天数重置为1
     * @param userId 用户ID
     * @param practiceTime 签到时间
     * @return
     */
    boolean practiceDayNumberOne(@Param("userId") Integer userId, @Param("practiceTime") LocalDateTime practiceTime);

    /**
     * 通过UserId查询连续签到信息
     *
     * @param userId
     * @return
     */
    ContinuityPractice selectContinuityPracticeByUserId(Integer userId);


    /**
     * 查询 连续签到top20信息
     *
     * @return
     */
    List<ContinuityPractice> selectHighestPracticeTop20();

    /**
     * 正序或倒序 查询 签到 信息列表
     *
     * @param desc
     * @return
     */
    List<ContinuityPractice> selectContinuityPracticeListPracticeTop(@Param("desc") String desc);

    /**
     * 初始化签到信息
     * @param userId
     * @return
     */
    boolean init(Integer userId);
}
